/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Clases;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Vector;
import java.util.Collections;

public class Seccion {

    private String numseccion;
    private Profesor profesor;
    private Vector<Estudiante> estudiantes;

    public Seccion(String numero) {
        numseccion = numero;
        estudiantes = new Vector<Estudiante>();
        profesor = new Profesor();
    }

    public Estudiante getEstudiante(int i) {
        return estudiantes.elementAt(i);
    }

    public Vector<Estudiante> getEstudiantes() {
        return estudiantes;
    }

    public void setEstudiantes(Vector<Estudiante> estudiantes) {
        this.estudiantes = estudiantes;
    }


    public void asignarProfesor(Profesor p) {
        profesor = p;
        System.out.println("ha sido asignador el profesor " + profesor.getNombre() + " " + profesor.getApellido());

    }

    public void agregarEstudiante(Estudiante estudiante) {
        System.out.println("agregando  . . . ");
        estudiantes.addElement(estudiante);
        System.out.println("estudiante agregado con exito");
    }

    public boolean retirarEstudiante(String cedula) {
        int posi = buscarEstudiante(cedula);
        if (posi != -1) {
            estudiantes.remove(posi);
            System.out.println("estudiante eliminado con exito");

            return true;
        } else {
            System.out.println("estudiante no encontrado");
            return false;
        }
    }

    public int buscarEstudiante(String cedula) {
        int pos = -1;

        for (int i = 0; i < estudiantes.size(); i++) {
            if (estudiantes.elementAt(i).getCedula().equals(cedula)) {
                pos = i;
            }
        }

        return pos;
    }

    public void ordenarPorCedula() throws IOException {
        String sFichero = "ordenarPorCedula.txt";
        File fichero = new File(sFichero);
        BufferedWriter escribir = new BufferedWriter(new FileWriter(sFichero));
        try {

            escribir.write("lista de estudiantes por cedula");
            escribir.write("******************************");
            escribir.write("cedula    apellido      nombre");
            for (int i = 0; i < estudiantes.size(); i++) {
                Collections.sort(estudiantes, new ComparadorCedula());
                escribir.write(estudiantes.elementAt(i).getCedula() + " "+estudiantes.elementAt(i).getApellido() + " "+ estudiantes.elementAt(i).getNombre()+"\n");
            }


        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (null != fichero) {
                    escribir.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }


    }

    public void ordenarPorNotaFinal() throws IOException {
        String sFichero = "ordenarPorNotaFinal().txt";
        File fichero = new File(sFichero);
        BufferedWriter escribir = new BufferedWriter(new FileWriter(sFichero));
        try {
            escribir.write("lista de estudiantes por nota final");
            escribir.write("***********************************");
            escribir.write("cedula    apellido      nombre     nota final");
            for (int i = 0; i < estudiantes.size(); i++) {
                Collections.sort(estudiantes, new ComparadorNotaFinal());
                escribir.write(estudiantes.elementAt(i).getCedula() + " "+ estudiantes.elementAt(i).getApellido() + " "+ estudiantes.elementAt(i).getNombre() + " "+ estudiantes.elementAt(i).getNotafinal() +"\n");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (null != fichero) {
                    escribir.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
    }

    public void aplicarEvaluacion() {
        for (int i = 0; i < estudiantes.size(); i++) {
            estudiantes.elementAt(i).presentarEvaluacion();
            System.out.println(i + " vueltas del preentar evaluacion");
        }

        for (int j = 0; j < estudiantes.size(); j++) {
            System.out.println(j + " vueltas del j");
            profesor.evaluarEstudiante(estudiantes.elementAt(j));
            profesor.AsignarEstado(estudiantes.elementAt(j));
        }

    }

    public float getPromedioSeccion() {
        float acum = 0, promedio;

        for (int i = 0; i < estudiantes.size(); i++) {
            acum += estudiantes.elementAt(i).getNotafinal();
        }

        promedio = acum / estudiantes.size();

        return promedio;

    }

    public String getNumseccion() {
        return numseccion;
    }

    public void setNumseccion(String numseccion) {
        this.numseccion = numseccion;
    }

    void setProfesor(Profesor profesor) {
        this.profesor = profesor;
    }

    public Seccion() {
        super();
        this.numseccion = "";
        estudiantes = new Vector();
    }

    public void ListadoAprobado() throws IOException {
        String sFichero = "Aprobados.txt";
        File fichero = new File(sFichero);
        BufferedWriter escribir = new BufferedWriter(new FileWriter(sFichero));
        try {
            escribir.write("lista de estudiantes aprobados");
            escribir.write("******************************");
            escribir.write("cedula   apellido       nombre");
            for (int i = 0; i < estudiantes.size(); i++) {
                if (estudiantes.elementAt(i).getNotafinal()>=10) {
                    escribir.write(estudiantes.elementAt(i).getCedula()+ " " + estudiantes.elementAt(i).getApellido()+ " " + estudiantes.elementAt(i).getNombre());
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (null != fichero) {
                    escribir.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
    }
    public void ListadoReprobado() throws IOException {
        String sFichero = "Reprobados.txt";
        File fichero = new File(sFichero);
        BufferedWriter escribir = new BufferedWriter(new FileWriter(sFichero));
        try {
            escribir.write("lista de estudiantes Reprobados");
            escribir.write("******************************");
            escribir.write("cedula   apellido       nombre");
            for (int i = 0; i < estudiantes.size(); i++) {
                if (estudiantes.elementAt(i).getNotafinal()<10) {
                    escribir.write(estudiantes.elementAt(i).getCedula()+ " " + estudiantes.elementAt(i).getApellido()+ " " + estudiantes.elementAt(i).getNombre());
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (null != fichero) {
                    escribir.close();
                }
            } catch (Exception e2) {
                e2.printStackTrace();
            }
        }
    }
}
